var Role = {};

//begin ListForm
Role.ListForm = function(frmId, url, params, title) {
	Role.ResultStore = new Ext.data.JsonStore({
        root: 'listResult',
        idProperty: 'id',
        totalProperty: 'totalItems',
        fields: ['id', 'name', 'note'],
        proxy : new Ext.data.HttpProxy({url : url})
    });
	Role.ResultStore.on('beforeload', function(store){
		store.baseParams = {name: Ext.getCmp('NameRole').getValue()};
    });
	Role.CheckAll = new Ext.grid.CheckboxSelectionModel();

	Role.GridResult = new Ext.grid.GridPanel({
        store: Role.ResultStore,
        trackMouseOver:false,
      
        disableSelection:false,
        loadMask: true,
        id : frmId + 'GridResult',
        columns: [
                  	Role.CheckAll,
                  	new Ext.grid.RowNumberer()  
					,{header:  'Tên Quyền', width: 100, sortable: true, dataIndex: 'name'}
                  	,{header:  'Ghi chú', width: 100,dataIndex: 'note'}
    	        ],
        sm : Role.CheckAll,
        columnLines: true,
        stripeRows: true,
        autoWidth : true,
        autoHeight:true,
        iconCls:'icon-grid',
        title: 'Danh sách quyền hạn',
        viewConfig: {
            forceFit:true,
            enableRowBody:false,
            showPreview:false
        },
        bbar: new Ext.PagingToolbar({
            pageSize: 10,
            store: Role.ResultStore,
            displayInfo: true,
            displayMsg: 'Phần tử {0} đến {1} của {2}',
            emptyMsg: 'Không có phần tử nào'
        }),
	    listeners : {
		    rowdblclick :{fn: function (grid, rowIndex, e) {
		    		var rows = grid.getSelectionModel().getSelections();
		    		if (Ext.getCmp('maintabs-id').getItem('Role.EditForm' + rows[0].data.id) != null) {
		    			Ext.getCmp('maintabs-id').getItem('Role.EditForm' + rows[0].data.id).show();
		    		}else{
			    		var form = Role.EditForm('Role.EditForm' + rows[0].data.id, url, {'id' : rows[0].data.id, 'page': 'edit'},title+' - Chi tiết', rows[0].data.id);
				    	Ext.getCmp('maintabs-id').add(form).show();
			    	}
			    }}
		}
        
    });
	var listForm = new Ext.FormPanel({
	closable:true,
    url: url,
    frame:true,
    title: title,
    bodyStyle:'padding:5px 0px 0',
	id : frmId,
    items: [{
        xtype:'fieldset',
		id: frmId + 'searchfieldset',
        checkboxToggle:false,
        title: 'Thông tin tìm kiếm',
        autoHeight:true,
        collapsed: false,
        collapsible : true,
        items :[{
        			id: 'NameRole',
					xtype: 'textfield',
					name : 'name',				   
					fieldLabel: 'Tên quyền',
					allowBlank:true,				   
					width: 300
            	},{
	            	xtype : 'hidden',
	            	name : 'crudaction',
	            	value : 'search'
            	}
        ]
    }, Role.GridResult],

    tbar: new Ext.Toolbar([{
	        text: 'Thêm mới',
	        iconCls:'x-button-add',
	        handler: function(){
	        	if (Ext.getCmp('maintabs-id').getItem('Role.EditForm') != null) {
	        		Ext.getCmp('maintabs-id').getItem('Role.EditForm').show();
	        	}else{
	        		Ext.getCmp('maintabs-id').add(Role.EditForm('Role.EditForm', url, null, title+' - Thêm mới')).show();
	        	}
	        }
	    }, '-' ,{
        text: 'Xóa',
        iconCls:'x-button-delete',
        handler: function(){
	    	var rows = Role.CheckAll.getSelections();
        	if (rows.length > 0) {
        		Ext.Msg.show({
		       		title: 'Thông báo',
	   			 	msg: 'Xóa các phần tử đã chọn?',
	   			 	icon: Ext.MessageBox.QUESTION,
	   			 	buttons: Ext.MessageBox.OKCANCEL,
	   			 	fn: function(btn, text) {
	   			 		if(btn == 'ok') {
		   			 		listForm.getForm().setValues([{id : 'crudaction', value : 'delete'}]);
				        	queryStr = FormUtils.toQueryStr('checkList', rows);
				        	var urlDelete = url;
				        	if (queryStr != '') {
				        		urlDelete += '?' + queryStr;
				        	}
				            listForm.getForm().submit({
				                url: urlDelete,
				                waitMsg: 'Vui lòng chờ giây lát....',
				                success: function(usergroupForm, o){
				            		Role.ResultStore.loadData(o.result);
									if (o.result.messageRespone  != null && o.result.messageRespone != '') {
										Ext.MessageBox.show({
									           title: 'Thông báo',
									           msg: o.result.messageResponse,
									           buttons: Ext.MessageBox.OK
									       });
									}					                    
				                }
				           });
	   			 		}
        			}
        		})
	        }else{
	        		Ext.MessageBox.show({
				           title: 'Thông báo',
				           msg: 'Chọn ít nhất một phần tử để thực hiện tác vụ này',
				           buttons: Ext.MessageBox.OK
				       });
	        }
	    }
    },'-' ,{
        text: 'Tìm kiếm',
        iconCls:'x-button-search',
        handler: function(){
    	var searchfieldset = Ext.getCmp(frmId + 'searchfieldset');
	        if(searchfieldset.collapsed) {
	        	searchfieldset.expand(true);
	        	return;
	        }
	    	listForm.getForm().submit({
	            url: url,
	            waitMsg: 'Tìm kiếm dữ liệu...',
	            success: function(roleForm, o){
					Role.ResultStore.loadData(o.result);
					if (o.result.messageRespone  != null && o.result.messageRespone != '') {
						Ext.MessageBox.show({
					           title: 'Thông báo',
					           msg: o.result.messageResponse,
					           buttons: Ext.MessageBox.OK
					       });
					}					                    
	            }
	    	});
    	}
        
    }, '-' ,{
        text: 'Làm lại',
        iconCls:'x-button-reset',
        handler: function(){
           listForm.getForm().reset();
        }
    }, '-' ,{
        text: 'Đóng',
        iconCls:'x-button-close',
        handler: function(){
        	Ext.getCmp('maintabs-id').remove(listForm, true);
        }
    }])
});
	listForm.getForm().load({
		url : url,
		params : params,
		method : 'POST',
		waitTitle: 'Thông báo',
		waitMsg: 'Vui lòng chờ giây lát...',
		success : function(form, action) {
			Role.ResultStore.loadData(action.result);
		}, failure : function(frm, action) {doSessionExpired(frm, action);}
	});

	return listForm;
}
// end ListForm

// begin EditForm
Role.EditForm = function(frmId, url, params,title,id) {
	var form = new Ext.FormPanel({
    labelWidth: 120,
    closable:true,
    id : frmId,
    url:url,
    frame:true,
    title: title,
    bodyStyle:'padding:5px 5px 0',
    
    items: [{
        xtype:'fieldset',
        checkboxToggle:false,
        title: title,
        autoHeight:true,
        defaults: {width: 300},
        defaultType: 'textfield',
        collapsed: false,
        items :[{
	                fieldLabel: 'Tên quyền',
	                name: 'name',
	                allowBlank : false
	            },{
	                fieldLabel: 'Ghi chú',
	                name: 'note',
	                allowBlank : true
	            },{
	            	xtype : 'hidden',
	            	name : 'id'
	            },{
	            	xtype : 'hidden',
	            	name : 'crudaction',
	            	value : 'insert-update'
	            },{
	            	xtype : 'hidden',
	            	name : 'page',
	            	value : 'edit'
	            }
	        ]
    }],

    tbar: new Ext.Toolbar([{
        text: 'Lưu',
        iconCls:'x-button-save',
        handler: function(){
	        if(form.getForm().isValid()){
	        	form.getForm().setValues([{id : 'crudaction', value : 'insert-update'}]);
	            form.getForm().submit({
	                url: url,
	                waitMsg: 'Đang lưu dữ liệu...',
	                success: function(roleForm, o){
	            		if(o.result.messageResponse != null){
	            			Ext.MessageBox.show({
						           title: 'Thông báo',
						           msg: o.result.messageResponse,
						           buttons: Ext.MessageBox.OK
						       });
	            		}
	                    if (Role.ListForm != null) {
	                    	Role.GridResult.getStore().reload();
	                    }
	                }
	            });
	        }
	    }
    },'-',{
        text: 'Làm lại',
        iconCls:'x-button-reset',
        handler: function(){
            if(form.getForm().findField('id').getValue() != ''){
            	Role.LoadEditForm();
            }else{
            	form.getForm().reset();
            }
        }
    },'-',{
        text: 'Trở lại',
        iconCls:'x-button-back',
        handler: function(){
        	if (Ext.getCmp('maintabs-id').getItem('Role.ListForm') != null) {
        		Ext.getCmp('maintabs-id').getItem('Role.ListForm').show();
        	}else{
            	Ext.getCmp('maintabs-id').add(Role.ListForm('Role.ListForm', url, {crudaction : 'search', pg4_offset : 0, maxPageItems : 10}, 'Quyền hạn')).show();
            }
        }
    },'-',{
        text: 'Đóng',
        iconCls:'x-button-close',
        handler: function(){
            Ext.getCmp('maintabs-id').remove(frmId, true);
        }
    }])
});

Role.LoadEditForm = function(){
	form.getForm().load({
		url : url,
		params : params,
		waitMsg:'Dữ liệu đang nạp...',
		success : function(form, action) {
			form.setValues([
						{id : 'id', value : action.result.data.id}
						,{id : 'name', value : action.result.data.name}
						,{id : 'note', value : action.result.data.note}
			]);
		}
	});
}
Role.LoadEditForm();
return form;

}
//end EditForm